home *** CD-ROM | disk | FTP | other *** search
/ 500 MB Nyheder Direkte fra Internet 2 / 500 MB nyheder direkte fra internet CD 2.iso / start / data / text / faq-1059.txt < prev    next >
Text File  |  1995-05-09  |  25KB  |  536 lines

  1. Archive-name: os-research/part3
  2. Version: $Revision: 1.2 $
  3. Last-Modified: $Date: 1995/02/03 14:32:27 $
  4.  
  5.         Answers to frequently asked questions
  6.           for comp.os.research: part 3 of 3
  7.  
  8.                Copyright (C) 1994, 1995
  9.                Bryan O'Sullivan
  10.  
  11.  
  12.  
  13.               TABLE OF CONTENTS
  14.  
  15.  
  16. 1.     Distributed systems
  17. 1.1.   What is the current status of the (insert name) project?
  18. 1.2.   How do approaches to load balancing differ?
  19. 1.3.   Fault tolerance in distributed systems
  20. 1.4.   Naming in distributed systems
  21. 1.5.   Distributed shared memory
  22. 1.5.1. Data consistency
  23. 1.5.1.1. Strictly consistent systems
  24. 1.5.1.2. Relaxing consistency
  25. 1.5.1.3. Application-specific coherence
  26. 1.5.2. Access synchronisation
  27. 1.5.3. Transfer and caching granularity
  28. 1.5.4. Address space structure
  29. 1.5.5. Fault tolerance
  30. 1.5.6. A brief bibliography on distributed shared memory
  31. 1.6.   What have we learned?
  32.  
  33. 2.     Needful things
  34.  
  35.  
  36.  
  37. ------------------------------
  38. Subject: [1] Distributed systems
  39. From: Distributed systems
  40.  
  41. A great deal of the high-profile research carried out in operating
  42. systems these days deals with distributed computing.  Not
  43. surprisingly, discussions of distributed systems make up a large
  44. amount of the traffic on comp.os.research.
  45.  
  46. ------------------------------
  47. Subject: [1.1] What is the current status of the (insert name) project?
  48. From: Distributed systems
  49.  
  50. See the section on `available software' for information on
  51. distributions of some of the systems mentioned here.
  52.  
  53. - The Amoeba project is still going.  There are roughly 20 people
  54.   working on it, but most of these are no longer kernel hackers.  They
  55.   are working on using it for parallel programming, wide-area
  56.   distributed systems, and other things.  Amoeba is used in over 100
  57.   universities at the moment, and is also used at commercial
  58.   institutions.
  59.  
  60. - Cronus is still under development at BBN.  The current public
  61.   release is 3.0.  The project currently has two thrusts---as the base
  62.   for advanced distributed system R&D, and as a platform for
  63.   constructing and deploying sophisticated distributed applications.
  64.  
  65.   Ongoing research topics include the integration of Cronus and Mach
  66.   technology, the exploration of techniques for the construction of
  67.   WAN-based and multi-organisational applications, investigation into
  68.   the integration of distributed systems and network management
  69.   systems, and work in high-performance distributed computing.
  70.  
  71. - Horus is being developed by the same group that worked on Isis; the
  72.   head of this group is Robbert van Renesse.
  73.  
  74. - Isis is no longer being developed at Cornell; it is now managed as a
  75.   commercial product.
  76.  
  77. - Mach: awaiting response from rfr
  78.  
  79. - Plan 9 is currently being restructured to make good use of a 300MBPS
  80.   fibre-optic network.  A general release of the system is under
  81.   consideration at the moment.
  82.  
  83. - QNX is a commercial POSIX-certified realtime OS with an installed
  84.   base of over 250,000 systems.  It is used extensively in process
  85.   control, factory automation, medical instrumentation, communications
  86.   and point-of-sale.  A number of universities are also doing research
  87.   with QNX.
  88.  
  89. - The Sprite network operating system project is winding down.  The
  90.   user community is shrinking, and only three people are currently
  91.   using the system as a basis for graduate research.  Sprite is
  92.   continuing to be used as the testbed for the Berkeley RAID project.
  93.  
  94. ------------------------------
  95. Subject: [1.2] How do approaches to load balancing differ?
  96. From: Distributed systems
  97.  
  98. Load-balancing policy falls into two broad groups: static and dynamic.
  99. Static policies use algorithms which operate without regard to
  100. run-time loads across a system, while dynamic policies use the
  101. run-time performance of various parts of a system in order to make
  102. more `informed' decisions about balancing.
  103.  
  104. [92-11-06-12-53.57] A dynamic load-balancing policy is one which uses
  105. run-time state information in making scheduling decisions.
  106.  
  107. There are two kinds of dynamic policies: adaptive and non-adaptive.
  108. The latter always use the same (fixed, load-dependent) policy; the
  109. former may adjust policy parameters in order to gradually improve
  110. their performance.
  111.  
  112. The key point is that while non-adaptive policies use only the
  113. information about the run-time state, adaptive policies use, in
  114. addition to this, information about current performance.
  115.  
  116. In adaptive policies, the rules for adjusting policy parameters may be
  117. static or dynamic.  An example of the former might be: `shift to a
  118. conservative migration rule when system-wide load patterns are varying
  119. too rapidly'.  An example of the latter could be: `increase
  120. sender-side threshold when migrated jobs cause slowdown rather than
  121. speedup'.  Some researchers refer to the performance-driven adaptation
  122. exhibited by the second policy as `learning'.
  123.  
  124. Since both non-adaptive policies and adaptive policies with static
  125. rules really use only load information, it is confusing to distinguish
  126. between them.  One way to avoid such confusion is to restrict the use
  127. of the word `adaptive' to policies that use performance feedback in
  128. order to drive their adjustment of policy parameters.
  129.  
  130. ------------------------------
  131. Subject: [1.3] Fault tolerance in distributed systems
  132. From: Distributed systems
  133.  
  134. One approach to providing fault tolerance in distributed systems
  135. involves the use of redundant services, such that standby facilities
  136. can become active in the event of the failure of, or loss of
  137. connection to, a primary service.
  138.  
  139. Another approach is to provide multiple paths of connectivity between
  140. the computers that make up the distributed system.  The QNX system,
  141. for example, supports multiple network drivers per node.  The purpose
  142. of the network connection under QNX is to merge the microkernels on
  143. the LAN into a single logical kernel.  Hence, if multiple LAN
  144. connections per node are present, the networking code can load balance
  145. the LAN traffic on the paths available.  It can also route around
  146. failed links, providing both greater LAN bandwidth and better fault
  147. tolerance.
  148.  
  149. See below for treatment of fault tolerance in systems which make use
  150. of distributed shared memory.
  151.  
  152. ------------------------------
  153. Subject: [1.4] Naming in distributed systems
  154. From: Distributed systems
  155.  
  156. [Material on naming and/or global naming sought.]
  157.  
  158. ------------------------------
  159. Subject: [1.5] Distributed shared memory
  160. From: Distributed systems
  161.  
  162. Distributed computer systems have evolved using message passing as
  163. their main method of communication.  Other communication systems used
  164. in loosely coupled distributed systems, such as RPC, are usually
  165. implemented on top of an underlying message passing system.  On the
  166. other hand, in tightly coupled systems, such as a multi-processor
  167. machine, the communication method used is usually shared memory.
  168.  
  169. In distributed shared memory (DSM) systems [Nitzberg & Lo, 91],
  170. processes share data transparently across node boundaries; data
  171. faulting, location, and movement is handled by the underlying system.
  172. Among other things, this allows parallel programs designed to use
  173. shared memory to execute transparently on a loosely coupled
  174. distributed system.  While the performance implications cannot be
  175. ignored, the advantages of the shared memory programming model are
  176. well known:
  177.  
  178. - Shared memory programs are usually shorter and easier to understand
  179.   than equivalent message passing programs.
  180.  
  181. - Large or complex data structures may easily be communicated.
  182.  
  183. - Shared memory gives transparent process-to-process communication.
  184.  
  185. - Programming with shared memory is a well-understood problem.
  186.  
  187. Shared-memory (or `procedure-oriented') and message-oriented operating
  188. systems are, in some sense, equivalent [Lauer & Needham, 78], though
  189. it has been claimed that the former are `more powerful' [Tam et al.,
  190. 90].
  191.  
  192. ------------------------------
  193. Subject: [1.5.1] Data consistency
  194. From: Distributed systems
  195.  
  196. Despite recent advances in both local and wide-area networking
  197. technologies, network latency is still a major factor in distributed
  198. systems and likely to remain so.  All DSM systems provide some sort of
  199. caching in an attempt to improve the performance beyond that provided
  200. by doing a network access on every reference to a non-local data item.
  201. Each system must decide whether or not to attempt to keep the data
  202. coherent, and, if so, what coherence strategy to use.  The coherence
  203. semantics which may be provided to the programmer include:
  204.  
  205. - `strict' consistency, where a read always returns the value written
  206.   by the most recent write
  207.  
  208. - a `loosely' consistent system where the system enforces some form of
  209.   weak consistency guarantees and the application (or compiler or
  210.   user) can indicate synchronisation points where consistency must be
  211.   enforced;
  212.  
  213. - no automatic consistency mechanism, but provide the user with the
  214.   facilities necessary to implement user level synchronisation and
  215.   consistency.
  216.  
  217. ------------------------------
  218. Subject: [1.5.1.1] Strictly consistent systems
  219. From: Distributed systems
  220.  
  221. Older, strictly consistent systems tend to enforce a single writer,
  222. multiple reader model, where at any time data will be held either at a
  223. single node (which may have write access) or several nodes (none of
  224. which may have write access).
  225.  
  226. Given this model, we must be able to locate a copy of our data when it
  227. is not resident.  The method most frequently used is to assign an
  228. `owner' to each item of data, where the owner has either the only
  229. writeable copy of the data, or one of the read-only copies.  Ownership
  230. may remain fixed throughout the life of a datum, or it may change
  231. dynamically.  In the latter case, the problem arises of locating the
  232. owner.  A database of locations may be maintained by centralised
  233. managers, or ownership information can be distributed among nodes of
  234. the system [Li and Hudak, 89].
  235.  
  236. In a strictly consistent system, we must also be able to synchronise
  237. writes.  The two major solutions to this problem are:
  238.  
  239. - Write broadcast.  The effects of every write are broadcast to ever
  240.   node that has a copy of the data being written; this effectively
  241.   implements a replication algorithm.  Write broadcast is usually
  242.   considered too expensive to be used as a general solution.
  243.  
  244. - Write invalidation.  Each node in the system holding a read-only
  245.   copy of the data being written is sent an invalidation message.
  246.  
  247. ------------------------------
  248. Subject: [1.5.1.2] Relaxing consistency
  249. From: Distributed systems
  250.  
  251. Permitting temporary inconsistencies is a common method of increasing
  252. performance in distributed systems.  Memory is said to be loosely
  253. coherent if the value returned by a read operation is the value
  254. written by an update operation to the same object that `could' have
  255. immediately preceded the read operation in some legal schedule of the
  256. threads in execution [Bennett et al., 90].
  257.  
  258. Using loose coherence, more than one thread may have write access to
  259. the same object, provided that the programmer knows that the writes
  260. will not conflict.
  261.  
  262. Another memory consistency model is `release consistency'
  263. [Gharachorloo et al., 90], in which memory accesses are divided into
  264. ordinary and synchronisation-related accesses.  The latter are further
  265. divided into `acquire' and `release' operations.  The `acquire'
  266. operation indicates that shared data is needed, and a processor's
  267. updates are not guaranteed to be performed at other nodes until a
  268. `release' is performed.  The primary advantage of this form of
  269. consistency is that it allows consistency updates to be tied to
  270. synchronisation events, and therefore to be delayed until actually
  271. needed by applications.  However, most release consistent systems
  272. require the programmer to make explicit use of `acquire' and `release'
  273. operations.
  274.  
  275. A DSM system called Midway introduces another new consistency model,
  276. `entry consistency' [Bershad et al., 93].  Entry consistency is weaker
  277. than many of the other models suggested, including release
  278. consistency; it requires explicit annotations to associate
  279. synchronisation objects and data.  On an `acquire', only the data
  280. associated with the synchronisation object is guaranteed to be
  281. consistent.  This extra weakness permits higher performance
  282. implementations of the underlying consistency protocols to be written.
  283. Midway also supports stronger consistency models, so that the
  284. application programmer can trade-off performance against the extra
  285. effort required to write entry consistent programs.
  286.  
  287. ------------------------------
  288. Subject: [1.5.1.3] Application-specific coherence
  289. From: Distributed systems
  290.  
  291. From [Cheriton, 86]:
  292.   `Problem-oriented shared memory' is a shared memory that implements
  293.   fetch and store operations specialised to the particular problem or
  294.   application it is supporting.  In particular, a problem-oriented
  295.   shared memory commonly provides a specialised form of consistency
  296.   and consistency maintenance that exploits application-specific
  297.   semantics.
  298. Cheriton goes on to propose that consistency constraints be relaxed
  299. and more use be made of problem semantics.  He suggests that, in some
  300. cases, stale data may be detected on use by the client, and the client
  301. may then recover.  A example would be hint caching.  In some
  302. applications, stale data may actually be sufficiently accurate,
  303. provided that the client can obtain up to date information when
  304. necessary.  In other applications, some data may be optional in the
  305. sense that the client can continue without it.  Other applications may
  306. tolerate having the results of store operations being lost or undone,
  307. for example, an application that regularly updates the entire data
  308. set.
  309.  
  310. Another approach is presented by the designers of Munin, where the
  311. runtime system accepts hints from the compiler or user to determine
  312. the coherence mechanism to be used for each object.  The default, in
  313. the absence of hints, is to use a general read-write consistency
  314. mechanism, much like that employed by IVY.  Munin supports several
  315. different object types that are based on the results of a survey of
  316. shared memory access characteristics.  The results of the survey
  317. showed that a very small percentage of all accesses to shared data
  318. fall under the general read-write type.  The Munin designers also note
  319. that a program moves through various stages of execution, and the
  320. types associated with objects change as time progresses
  321.  
  322. ------------------------------
  323. Subject: [1.5.2] Access synchronisation
  324. From: Distributed systems
  325.  
  326. Most parallel applications will use some sort of synchronisation
  327. system to order and control accesses to shared data before actually
  328. accessing the data.  The most important thing to note in DSM systems
  329. is that just blindly using standard test and set operations on bytes
  330. in shared pages will produce a high fault rate; faults are usually
  331. expensive, making this approach unacceptable.
  332.  
  333. Clouds merges locking with the cache consistency protocol, so that the
  334. user may obtain both a lock and the data in one network transaction.
  335. This system has the advantage that no invalidation messages are
  336. required, since the granting of the lock guarantees that there are no
  337. conflicting copies; it has the disadvantage that an explicit
  338. unlock/discard operation is required to release access to the data.
  339. This is acceptable in Clouds, as the DSM system was designed
  340. specifically to support object invocation, so it is easy to discard on
  341. a return.
  342.  
  343. Munin provides a distributed lock mechanism using `proxy objects' to
  344. reduce network load.  Proxy objects are maintained by a lock server on
  345. each node; when a thread wants to obtain a lock on an object, it
  346. attempts to lock the proxy instead.  The server obtains the global
  347. lock if it is not already held locally.  Global locking is done by
  348. negotiating with all the other lock servers in the system.  Each lock
  349. may be migrated from server to server, and part of the Munin system
  350. allows objects to be migrated along with their locks.
  351.  
  352. Other systems, such as IVY and Mermaid, use modified versions of classic
  353. multiprocessor synchronisation facilities.
  354.  
  355. ------------------------------
  356. Subject: [1.5.3] Transfer and caching granularity
  357. From: Distributed systems
  358.  
  359. When caching objects in local memory, it is necessary to decide what
  360. level of granularity to use.  All current systems use a fixed block
  361. size in the cache, rather than varying the granularity based on object
  362. size.  Usually this is due to constraints imposed by the system
  363. hardware and memory management.
  364.  
  365. The choice of the block size in the cache depends on several issues.
  366.  
  367. - Cost of communication: for example, on many local area networks
  368.   there is little difference between the time required to send a
  369.   one-byte message and that required to send a 1024-byte message.
  370.   Transmitting bulk changes rather than single-byte modifications
  371.   would therefore seem desirable.
  372.  
  373. - The choice of granularity also depends on the locality of reference
  374.   in the application, as thrashing may occur when two machines are
  375.   both accessing the same block (this is also known as the `ping-pong
  376.   effect').  This would seem to argue for a smaller block size.  It
  377.   should be noted that many object-oriented systems exhibit very poor
  378.   locality of reference.
  379.  
  380. In practice, a compromise must be achieved, as with conventional
  381. virtual memory systems.  Most systems use a block size which is the
  382. same as that of the virtual memory management unit on the system, or a
  383. multiple thereof.  Among other things, it allows the hardware to be
  384. used to help in the maintenance of consistency.  The choice is
  385. complicated somewhat when heterogeneous machines are being used, but
  386. in these cases, the lowest common multiple of hardware supported page
  387. sizes can usually be used.
  388.  
  389. The only major system that doesn't use a large block size is Memnet,
  390. in which a hardware based DSM system was implemented on a high speed
  391. token ring; a 32-byte block size was used instead [Delp & Farber].
  392. The choice of a small block size is appropriate, as the system is much
  393. closer to a shared memory multi-processor than it is to a software DSM
  394. system.  This is because the entire processor is blocked on a cache
  395. miss; the processor is not actually aware of the distributed nature of
  396. its address space.  Also, the ratio between remote and local memory
  397. access times is much lower than in the software based systems due to
  398. the dedicated token ring (200Mbps) and hardware assistance.
  399.  
  400. ------------------------------
  401. Subject: [1.5.4] Address space structure
  402. From: Distributed systems
  403.  
  404. In a single shared address space system, the system appears as a set
  405. of threads executing in a shared distributed address space.  Objects
  406. always appear at the same addresses on all nodes.  Single address
  407. space systems have had a resurgence in popularity with the arrival of
  408. 64-bit processors.  A number of researchers believe that a 64-bit
  409. address space is large enough to act as a single global address space
  410. for all the memory (both primary and secondary) in a distributed
  411. system.  Examples of such systems include Angel, Mungi, and Opal.
  412. Security and protection are a major problem in such systems, and
  413. current approaches either rely on hardware assistance or stochastic
  414. algorithms, or ignore the problem.
  415.  
  416. Another approach is to divide each process's address space into
  417. different fixed regions, some of which are private and not shared, and
  418. some of which are shared with some other processes.  Ra, the Clouds
  419. kernel, takes this approach using O, P, and K address regions, with
  420. the O region shared between all processes executing in a given object;
  421. the P and K regions are local to a process and kernel, respectively.
  422. Here objects always appear at the same address but may not be visible
  423. from every address space.  By contrast, some systems, including Mirage
  424. and Mach, allow shared data to exist at differing addresses in
  425. different processes address spaces.  However, neither system does
  426. transparent pointer translation, so the address changes are not
  427. entirely transparent to the application.
  428.  
  429. As for the structuring of the shared region itself, some systems --
  430. for example, IVY and Mether -- use a single flat region: one
  431. continuous range of virtual addresses represent the shared address
  432. space and are managed by the DSM system.  This single address space is
  433. usually sub-divided into pages.  Most systems use paged segmentation:
  434. the shared region consists of disjoint pieces, which are usually
  435. managed separately and are not all mapped in any one process.
  436. Frequently, the segments (sometimes called memory objects, or windows)
  437. are related to the backing store.  For example, in Clouds, the object
  438. address space consists of windows onto larger segments; these segments
  439. are usually maintained on secondary storage.
  440.  
  441. ------------------------------
  442. Subject: [1.5.5] Fault tolerance
  443. From: Distributed systems
  444.  
  445. Most DSM systems ignore the fault tolerance issue or maintain that it
  446. is an operating system issue and should be handled by the underlying
  447. system.  However, it would appear that in practice a DSM system would
  448. strongly effect the fault tolerance of a system.  For example, in a
  449. system where several systems are sharing access to a set of data, the
  450. failure of any one of them could lead to the failure of all the
  451. connected sites (or, at least, some of the processes on each site).
  452. We are also presented with an unusual failure handling problem.  It is
  453. fairly easy to see how to handle a failed message or RPC, but how do
  454. you handle a failed page fault?
  455.  
  456. The original Clouds system provided recoverability using shadowing of
  457. segments and a transactional system using commits.  The recovery
  458. system was not really integrated with the DSM system and was merely
  459. implemented at the segment storage site.  In order to maintain a
  460. consistent view of data when one transaction is active at multiple
  461. nodes, they have more recently been forced to integrate the
  462. transaction system with the DSM support system.
  463.  
  464. ------------------------------
  465. Subject: [1.5.6] A brief bibliography on distributed shared memory
  466. From: Distributed systems
  467.  
  468. [Nitzberg & Lo, 1991]
  469.   Nitzberg, W. and Lo, V., `Distributed shared memory: a survey of
  470.     issues and algorithms', IEEE Computer, August 91, pp. 52-60
  471.  
  472. [Lauer & Needham, 1978]
  473. [Tam et al., 90]
  474.   Tam, M.-C., Smith, J. M. & Farber, D. J., `A taxonomy-based
  475.     comparison of several distributed shared memory systems', ACM
  476.     Operating Systems Review 24(3), July 90, pp. 40-67
  477.  
  478. [Li and Hudak, 89]
  479.   Li, K. & Hudak, P., `Memory coherence in shared virtual memory
  480.     systems', ACM Transactions on Computer Systems 7(4), November 89,
  481.     pp. 321-359
  482.  
  483. [Bennett et al., 90]
  484.   Bennett, J. K., Carter, J. B. & Zwaenopoel, W., `Munin:
  485.     distributed shared memory based on type-specific memory
  486.     coherence', Proceedings of the 2nd ACM SIGPLAN Symposium on
  487.     Principles and Practice of Parallel Programming, SIGPLAN Notices
  488.     25(3), March 90, pp. 168-176
  489.  
  490. [Gharachorloo et al., 90]
  491.   Gharachorloo, K., et al., `Memory consistency and event ordering in
  492.     scalable shared-memory multiprocessors', ACM SIGARCH News 18(2),
  493.     June 90
  494.  
  495. [Bershad et al., 93]
  496.   Bershad, B. N., et al., `The Midway distributed shared memory
  497.     system', Technical Report CMU-CS-93-119, School of Computer
  498.     Science, Carnegie Mellon University, 1993.  Available via
  499.     anonymous ftp from
  500.     ftp.cs.cmu.edu:project/mach/public/doc/published/midway.ps.
  501.  
  502. [Cheriton, 86]
  503.   Cheriton, D. R., `Problem-oriented shared memory: a decentralized
  504.     approach to distributed system design', Proceedings of the 6th
  505.     International Conference on Distributed Computing Systems, May 86,
  506.     pp. 190-197
  507.  
  508. [Delp & Farber]
  509.   Delp, G. S. & Farber, D. J., `Memnet -- a different approach to a
  510.     network', Technical Report, Department of Electrical Engineering,
  511.     University of Delaware, ???
  512.  
  513.  
  514. ------------------------------
  515. Subject: [1.6] What have we learned?
  516. From: Distributed systems
  517.  
  518. Andy Tanenbaum started a (very long) thread on this topic in
  519. comp.os.research in April of 1992 [92-04-03-17-10.05].  The interested
  520. reader is directed to the comp.os.research archives, since this thread
  521. proved rather divisive (i.e. nobody really agreed on any issue).
  522.  
  523.  
  524. ------------------------------
  525. Subject: [2] Needful things
  526. From: Needful things
  527.  
  528. This FAQ is incomplete, and will probably remain in this state to a
  529. greater or lesser extent for ever and ever.  Should you feel willing
  530. to contribute some material, the following is a list of topics which
  531. ``urgently'' require treatment (some of which I may get around to
  532. covering myself at some point):
  533.  
  534. - naming in distributed systems
  535.  
  536.